home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / tutor.arc / RAMTEST.SA < prev    next >
Text File  |  1990-01-05  |  4KB  |  75 lines

  1.          XDEF      RAMTEST
  2.  SPC 2
  3. RAMTEST  IDNT      1,0       RAMTEST                                 11/02/81
  4.          SECTION   11
  5.  
  6. ***********************************************************************
  7. * MEMORY TEST SUBROUTINE.                                             *
  8. *                                                                     *
  9. *        A0=BEGINNING ADDRESS (MUST BE EVEN ADDRESS)                  *
  10. *        A1=ENDING ADDRESS+1  (MUST BE EVEN ADDRESS)                  *
  11. *        A2=FAILING ADDRESS                                           *
  12. *        D0=DATA WRITTEN TO RAM                                       *
  13. *        D1=DATA READ FROM RAM                                        *
  14. *                                                                     *
  15. *        ZERO FLAG IS SET IF TEST IS SUCCESSFUL                       *
  16. *           REGISTERS D2,D3,D4 DESTROYED                              *
  17. ***********************************************************************
  18.  SPC 2
  19. *       -1ST TEST-
  20. RAMTEST  DS        0
  21.          MOVE.L    A0,D3               D3 = BEGINNING ADDRESS
  22.          MOVE.L    D3,A2               USE A2 AS POINTER IN MEMORY
  23. WALK3    MOVE.L    #$FFFFFFFE,D0       PREPARE FOR "WALKING BIT" TEST
  24. WALK0
  25.          MOVE.W    D0,(A2)             STORE D0 INTO MEMORY
  26.          MOVE.W    (A2),D1             D1 CONTAINS RAM DATA
  27.          CMP.W     D0,D1               WRITTEN VS. READ
  28.          BNE.S     RAMERR              STOP ON ERROR
  29.          ROL.W     #1,D0               ROLL A ZERO IN A FIELD OF ONES
  30.          BCS.S     WALK0               CONTINUE TILL DONE
  31.  SPC 1
  32.          MOVE.L    #$00000001,D0       THIS TIME, WALK A 1 THROUGH ZEROS
  33. WALK1
  34.          MOVE.W    D0,(A2)             STORE D0 INTO MEMORY
  35.          MOVE.W    (A2),D1             D1 CONTAINS RAM DATA
  36.          CMP.W     D0,D1               WRITTEN VS. READ
  37.          BNE.S     RAMERR              STOP ON ERROR
  38.          ASL.W     #1,D0               ROLL A ONE TO THE NEXT POSITION
  39.          BCC.S     WALK1               CONTINUE TILL DONE
  40.  SPC 1
  41.          LEA       $0100(A2),A2        GO TO NEXT 256TH POSITION
  42.          CMP.L     A1,A2               CHECK TO SEE IF DONE
  43.          BLT.S     WALK3               CONTINUE
  44.  SPC 1
  45. *        -2ND TEST-
  46.          MOVE.L    D3,A2               SET A2 TO POINT TO START OF MEMORY
  47.          MOVE.L    #$00000000,D0       CLEAR D0
  48. MTCLR
  49.          MOVE.W    D0,(A2)+            CLEAR MEMORY
  50.          CMP.L     A1,A2               DONE?
  51.          BNE.S     MTCLR               NO... ZERO ALL OF MEMORY
  52.  SPC 1
  53.          MOVE.L    #$FFFFFFFF,D2       SET D2 = FFFF
  54. MTSTOR1
  55.          MOVE.W    -(A2),D1            FIRST READ BACK MEMORY
  56.          CMP.W     D0,D1               CHK AGAINST WHAT WAS WRITTEN
  57.          BNE.S     RAMERR              STOP ON ERROR
  58.          MOVE.W    D2,(A2)             STORE COMPLEMENT
  59.          CMP.L     D3,A2               DONE?
  60.          BNE.S     MTSTOR1             NO... COMPLEMENT ALL OF MEMORY
  61.          MOVE.W    D2,D0               D0=WHAT WAS WRITTEN
  62.          NOT.W     D2                  SAVE COMPLEMENT FOR LATER
  63.  SPC 1
  64. MTSTOR0
  65.          MOVE.W    (A2),D1             READ BACK MEMORY
  66.          CMP.W     D0,D1               CHK AGAINST WHAT WAS WRITTEN
  67.          BNE.S     RAMERR              STOP ON ERROR
  68.          MOVE.W    D2,(A2)+            STORE COMPLEMENT
  69.          CMP.L     A1,A2               DONE?
  70.          BNE       MTSTOR0             NO...KEEP LOOPING, YES...
  71.  SPC 1
  72. RAMERR   MOVE.L    D3,A0               RESTORE A0
  73.          RTS                           RETURN
  74.  SPC 3
  75.          END